#include <stdio.h>
#define MAXSIZE 100
typedef struct 
{
	int n,e;					
	char V[MAXSIZE];			
	int E[MAXSIZE][MAXSIZE];	
} 
Graph;

void InitGraph(Graph *G) 
{
	int i,j;
	for(i=0; i<G->n; i++)
		for(j=0; j<G->n; j++)
			G->E[i][j]=0;
}

void CreateGraph(Graph *G)
 {
	int i,j,k;
	char ch1,ch2,X;
	printf("请输入图的顶点数目：");
	scanf("%d",&G->n);
	printf("请输入图的边的数目：");
	scanf("%d",&G->e);
	printf("请输入各顶点的信息：\n");
	for(i=0; i<G->n; i++) {
		scanf("%c",&X); 
		printf("输入第%d个顶点:",i+1);
		scanf("%c",&(G->V[i]));
	}
	for(k=0; k<G->e; k++) {
		scanf("%c",&X); 
		printf("建立第%d条边(以逗号隔开):",k+1);
		scanf("%c,%c",&ch1,&ch2);
		for(i=0; i<G->n; i++)
			for(j=0; j<G->n; j++)
				if(ch1==G->V[i]&&ch2==G->V[j]) {
					G->E[i][j]=1;
					G->E[j][i]=1;
				}
	}
}

void PrintGraph(Graph G) {
	int i,j;
	for(i=0; i<G.n; i++) {
		for(j=0; j<G.n; j++)
			printf("%d  ",G.E[i][j]);
		printf("\n");
	}
}


int main() 
{
	Graph G;
	InitGraph(&G);					
	CreateGraph(&G);				
	printf("图的邻接矩阵为：\n");
	PrintGraph(G);				
}

